package com.ihr360.payroll.service.payroll.convertor;

import com.ihr360.commons.lang.CollectionUtils;
import com.ihr360.commons.model.IConvertor;
import com.ihr360.payroll.config.SalaryTaxEntity;
import com.ihr360.payroll.config.SalaryTaxTableEntity;
import com.ihr360.payroll.config.SalaryTaxTypeEntity;
import com.ihr360.payroll.config.TaxDivisionEntity;
import com.ihr360.payroll.model.dto.salary.basecode.SalaryTaxType;
import com.ihr360.payroll.model.dto.salary.basecode.TaxDivision;
import com.ihr360.payroll.model.dto.salary.tax.SalaryTax;
import com.ihr360.payroll.model.dto.salary.tax.SalaryTaxTable;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.List;

@Component
public class SalaryTaxTableConvertor implements IConvertor<SalaryTaxTableEntity, SalaryTaxTable> {

    @Autowired
    private SalaryTaxConvertor salaryTaxConvertor;

    @Override
    public SalaryTaxTable convertEntityToDto(SalaryTaxTableEntity entity) {
        return null;
    }

    @Override
    public SalaryTaxTableEntity convertDtoToEntity(SalaryTaxTable dto) {
        if (dto == null) {
            return null;
        }
        SalaryTaxTableEntity entity = new SalaryTaxTableEntity();
        BeanUtils.copyProperties(dto, entity);
        List<SalaryTax> salaryTaxes = dto.getSalaryTaxes();
        if (CollectionUtils.isNotEmpty(salaryTaxes)) {
            List<SalaryTaxEntity> salaryTaxEntities = salaryTaxConvertor.convertDtosToEntities(salaryTaxes);
            entity.setSalaryTaxes(salaryTaxEntities);
        }
        TaxDivision division = dto.getDivision();
        if (division != null) {
            TaxDivisionEntity taxDivisionEntity = new TaxDivisionEntity();
            BeanUtils.copyProperties(division, taxDivisionEntity);
            entity.setDivision(taxDivisionEntity);
        }

        SalaryTaxType type = dto.getType();
        if (type != null) {
            SalaryTaxTypeEntity salaryTaxTypeEntity = new SalaryTaxTypeEntity();
            BeanUtils.copyProperties(type, salaryTaxTypeEntity);
            entity.setType(salaryTaxTypeEntity);
        }
        return entity;
    }
}
